List Interface

ArrayList, Vector [List]
LinkedList [순차 자료 구조]
    ArrayList
Member.java
package collection;
public class Member implements Comparable<Member>{
private int memberId;
private String memberName;
public Member(int memberId, String memberName) {
this.memberId=memberId;
this.memberName=memberName;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId=memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName=memberName;
}
@Override
public String toString() {
return memberName+" "+memberId+" .";
}
@Override
public int hashCode(){
return memberId;
}
@Override
public boolean equals(Object obj){
if(obj instanceof Member){
Member member=(Member) obj;
if(this.memberId==member.memberId)return true;
else return false;
}
return false;
}
@Override
public int compareTo(Member member){
return (this.memberId-member.memberId);
}
}
MemberArrayList.java
package collection.arraylist;
import java.util.ArrayList;
import collection.Member;
public class MemberArrayList {
private ArrayList<Member> arrayList;
public MemberArrayList() {
arrayList=new ArrayList<Member>();
}
public void addMember(Member member) {
arrayList.add(member);
}
public boolean removeMember(int memberId) {
for(int i=0;i<arrayList.size();i++) {
Member member=arrayList.get(i);
int tempId=member.getMemberId();
if(tempId==memberId) {
arrayList.remove(i);
return true;
}
}
System.out.println(memberId+" .");
return false;
}
public void showAllMember() {
for(Member member:arrayList) {
System.out.println(member);
}
System.out.println();
}
}
MemberArrayListTest.java
package collection.arraylist;
import collection.Member;
public class MemberArrayListTest {
public static void main(String[] args) {
MemberArrayList memberArrayList=new MemberArrayList();
Member memberLee=new Member(1001,"");
Member memberSon=new Member(1002,"");
Member memberPark=new Member(1003,"");
Member memberHong=new Member(1004,"");
memberArrayList.addMember(memberLee);
memberArrayList.addMember(memberSon);
memberArrayList.addMember(memberPark);
memberArrayList.addMember(memberHong);
memberArrayList.showAllMember();
memberArrayList.removeMember(memberHong.getMemberId());
memberArrayList.showAllMember();
}
}

이지원회원님의 아이디는 1001 입니다.

손민국회원님의 아이디는 1002 입니다.

박서훤회원님의 아이디는 1003 입니다.

홍길동회원님의 아이디는 1004 입니다.


이지원회원님의 아이디는 1001 입니다.

손민국회원님의 아이디는 1002 입니다.

박서훤회원님의 아이디는 1003 입니다.

    Vector
ArrayList와 Vector의 가장 큰 차이점은 동기화(synchronization) 지원 여부이다.
두 개 이상의 스레드가 동시에 Vector를 사용할 때 오류가 나지 않도록 실행 순서를 보장한다.
ArrayList를 사용하여 구현했는데 나중에 프로그램에 동기화가 필요하다면 Vector로 바꾸지 않고,
아래와 같이 ArrayList 생성 코드를 쓰면 된다.
Collection.synchronizedList(new ArrayList<String>());
    LinkedList
LinkedList는 요소를 추가할 때마다 동적으로 요소의 메모리를 생성하기 때문에 효율적이다.
하지만 List에 비해서 검색할 때 물리적 접근이 비 효율적이다.
LinkedListTest.java
package collection.arraylist;
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> myList=new LinkedList<String>();
myList.add("A");
myList.add("B");
myList.add("C");
System.out.println(myList);
myList.add(1,"D");
System.out.println(myList);
myList.addFirst("0");
System.out.println(myList);
System.out.println(myList.removeLast());
System.out.println(myList);
}
}

[A, B, C]

[A, D, B, C]

[0, A, D, B, C]

C

[0, A, D, B]

    Stack and Queue(ArrayList)
Stack(Last In First Out;LIFO)
package collection.arraylist;
import java.util.ArrayList;
class MyStack{
private ArrayList<String> arrayStack=new ArrayList<String>();
public void push(String data) {
arrayStack.add(data);
}
public String pop() {
int len=arrayStack.size();
if(len==0) {
System.out.println(" .");
return null;
}
return (arrayStack.remove(len-1));
}
}
public class StackTest {
public static void main(String[] args) {
MyStack stack=new MyStack();
stack.push("A");
stack.push("B");
stack.push("C");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
Queue(First In First Out;FIFO)
package collection.arraylist;
import java.util.ArrayList;
class MyQueue{
private ArrayList<String> arrayQueue=new ArrayList<String>();
public void enQueue(String data) {
arrayQueue.add(data);
}
public String deQueue() {
int len=arrayQueue.size();
if(len==0) {
System.out.println(" .");
return null;
}
return (arrayQueue.remove(0));
}
}
public class QueueTest {
public static void main(String[] args) {
MyQueue queue=new MyQueue();
queue.enQueue("A");
queue.enQueue("B");
queue.enQueue("C");
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
}
}